// "Copyright [2021] <Copyright Shengkai Lin>"

#ifndef NETWORK_CONTROLLER_TOPO_MANAGER_H_
#define NETWORK_CONTROLLER_TOPO_MANAGER_H_

#include <string>
#include "ai_sim.h"
#include "network_controller/topology.h"

namespace ai_sim {

class TopoManager : public omnetpp::cSimpleModule{
 private:
    const char* nameControlPlane;  // TODO:String
    const char* nameDataPlane;
    const char* nameWorker;
    // Use the class cTopology to manage the resource in the network.
    // The data_plane_topo is used to discover the route
    Topology data_plane_topo;
    // The workers_topo is used to manage the sensitive resources
    // for example gpus.
    Topology workers_topo;
    // Manage the control plane
    Topology control_plane_topo;

 public:
    void initialize() override;
    Topology * getDataplaneTopo();
    Topology * getWorkersTopo();
    Topology * getControlplaneTopo();
    Topology::Node* getNodeinTopo(
       Topology::Node*, Topology*);
};
}  // namespace ai_sim


#endif  // NETWORK_CONTROLLER_TOPO_MANAGER_H_
